# REQUIRES: system-linux
# RUN: llvm-bolt  %S/../../../llvm/test/tools/llvm-profgen/Inputs/inline-cs-pseudoprobe.perfbin --print-pseudo-probes=all -o %t.bolt 2>&1 | FileCheck %s

CHECK: Report of decoding input pseudo probe binaries

CHECK-NEXT: Pseudo Probe Desc:
CHECK-NEXT: GUID: 6699318081062747564 Name: foo
CHECK-NEXT: Hash: 563088904013236
CHECK-NEXT: GUID: 15822663052811949562 Name: main
CHECK-NEXT: Hash: 281479271677951
CHECK-NEXT: GUID: 16434608426314478903 Name: bar
CHECK-NEXT: Hash: 72617220756

CHECK:  [Probe]: FUNC: bar Index: 1  Type: Block
CHECK:  [Probe]: FUNC: bar Index: 4  Type: Block
CHECK:  [Probe]: FUNC: foo Index: 1  Type: Block
CHECK:  [Probe]: FUNC: foo Index: 2  Type: Block
CHECK:  [Probe]: FUNC: foo Index: 5  Type: Block
CHECK:  [Probe]: FUNC: foo Index: 6  Type: Block
CHECK:  [Probe]: FUNC: foo Index: 2  Type: Block
CHECK:  [Probe]: FUNC: foo Index: 3  Type: Block
CHECK:  [Probe]: FUNC: foo Index: 4  Type: Block
CHECK:  [Probe]: FUNC: bar Index: 1  Type: Block  Inlined: @ foo:8
CHECK:  [Probe]: FUNC: bar Index: 4  Type: Block  Inlined: @ foo:8
CHECK:  [Probe]: FUNC: foo Index: 6  Type: Block
CHECK:  [Probe]: FUNC: foo Index: 2  Type: Block
CHECK:  [Probe]: FUNC: foo Index: 7  Type: Block
CHECK:  [Probe]: FUNC: foo Index: 9  Type: DirectCall
CHECK:  [Probe]: FUNC: main Index: 1  Type: Block
CHECK:  [Probe]: FUNC: foo Index: 1  Type: Block  Inlined: @ main:2
CHECK:  [Probe]: FUNC: foo Index: 2  Type: Block  Inlined: @ main:2
CHECK:  [Probe]: FUNC: foo Index: 5  Type: Block  Inlined: @ main:2
CHECK:  [Probe]: FUNC: foo Index: 6  Type: Block  Inlined: @ main:2
CHECK:  [Probe]: FUNC: foo Index: 2  Type: Block  Inlined: @ main:2
CHECK:  [Probe]: FUNC: foo Index: 3  Type: Block  Inlined: @ main:2
CHECK:  [Probe]: FUNC: foo Index: 4  Type: Block  Inlined: @ main:2
CHECK:  [Probe]: FUNC: bar Index: 1  Type: Block  Inlined: @ main:2 @ foo:8
CHECK:  [Probe]: FUNC: bar Index: 4  Type: Block  Inlined: @ main:2 @ foo:8
CHECK:  [Probe]: FUNC: foo Index: 6  Type: Block  Inlined: @ main:2
CHECK:  [Probe]: FUNC: foo Index: 2  Type: Block  Inlined: @ main:2
CHECK:  [Probe]: FUNC: foo Index: 7  Type: Block  Inlined: @ main:2
CHECK:  [Probe]: FUNC: foo Index: 9  Type: DirectCall  Inlined: @ main:2

CHECK: Pseudo Probe Address Conversion results:

CHECK: Address: 0x201750 FUNC: bar Index: 1  Type: Block
CHECK: Address: 0x201750 FUNC: bar Index: 4  Type: Block
CHECK: Address: 0x201770 FUNC: foo Index: 1  Type: Block
CHECK: Address: 0x201770 FUNC: foo Index: 2  Type: Block
CHECK: Address: 0x20177d FUNC: foo Index: 5  Type: Block
CHECK: Address: 0x20177d FUNC: foo Index: 6  Type: Block
CHECK: Address: 0x20177d FUNC: foo Index: 2  Type: Block
CHECK: Address: 0x20178b FUNC: foo Index: 3  Type: Block
CHECK: Address: 0x2017aa FUNC: foo Index: 4  Type: Block
CHECK: Address: 0x2017aa FUNC: bar Index: 1  Type: Block  Inlined: @ foo:8
CHECK: Address: 0x2017aa FUNC: bar Index: 4  Type: Block  Inlined: @ foo:8
CHECK: Address: 0x2017aa FUNC: foo Index: 6  Type: Block
CHECK: Address: 0x2017aa FUNC: foo Index: 2  Type: Block
CHECK: Address: 0x2017d7 FUNC: foo Index: 7  Type: Block
CHECK: Address: 0x2017e2 FUNC: foo Index: 9  Type: DirectCall
CHECK: Address: 0x2017f0 FUNC: main Index: 1  Type: Block
CHECK: Address: 0x2017f0 FUNC: foo Index: 1  Type: Block  Inlined: @ main:2
CHECK: Address: 0x2017f0 FUNC: foo Index: 2  Type: Block  Inlined: @ main:2
CHECK: Address: 0x2017fd FUNC: foo Index: 5  Type: Block  Inlined: @ main:2
CHECK: Address: 0x2017fd FUNC: foo Index: 6  Type: Block  Inlined: @ main:2
CHECK: Address: 0x2017fd FUNC: foo Index: 2  Type: Block  Inlined: @ main:2
CHECK: Address: 0x20180b FUNC: foo Index: 3  Type: Block  Inlined: @ main:2
CHECK: Address: 0x20182a FUNC: foo Index: 4  Type: Block  Inlined: @ main:2
CHECK: Address: 0x20182a FUNC: bar Index: 1  Type: Block  Inlined: @ main:2 @ foo:8
CHECK: Address: 0x20182a FUNC: bar Index: 4  Type: Block  Inlined: @ main:2 @ foo:8
CHECK: Address: 0x20182a FUNC: foo Index: 6  Type: Block  Inlined: @ main:2
CHECK: Address: 0x20182a FUNC: foo Index: 2  Type: Block  Inlined: @ main:2
CHECK: Address: 0x201857 FUNC: foo Index: 7  Type: Block  Inlined: @ main:2
CHECK: Address: 0x201862 FUNC: foo Index: 9  Type: DirectCall  Inlined: @ main:2

CHECK: 			Address:  2103120
CHECK-NEXT:  [Probe]: FUNC: bar Index: 1  Type: Block
CHECK-NEXT:  [Probe]: FUNC: bar Index: 4  Type: Block
CHECK-NEXT: Address:  2103152
CHECK-NEXT:  [Probe]: FUNC: foo Index: 1  Type: Block
CHECK-NEXT:  [Probe]: FUNC: foo Index: 2  Type: Block
CHECK-NEXT: Address:  2103165
CHECK-NEXT:  [Probe]: FUNC: foo Index: 5  Type: Block
CHECK-NEXT:  [Probe]: FUNC: foo Index: 6  Type: Block
CHECK-NEXT:  [Probe]: FUNC: foo Index: 2  Type: Block
CHECK-NEXT: Address:  2103179
CHECK-NEXT:  [Probe]: FUNC: foo Index: 3  Type: Block
CHECK-NEXT: Address:  2103210
CHECK-NEXT:  [Probe]: FUNC: foo Index: 4  Type: Block
CHECK-NEXT:  [Probe]: FUNC: foo Index: 6  Type: Block
CHECK-NEXT:  [Probe]: FUNC: foo Index: 2  Type: Block
CHECK-NEXT:  [Probe]: FUNC: bar Index: 1  Type: Block  Inlined: @ foo:8
CHECK-NEXT:  [Probe]: FUNC: bar Index: 4  Type: Block  Inlined: @ foo:8
CHECK-NEXT: Address:  2103255
CHECK-NEXT:  [Probe]: FUNC: foo Index: 7  Type: Block
CHECK-NEXT: Address:  2103266
CHECK-NEXT:  [Probe]: FUNC: foo Index: 9  Type: DirectCall
CHECK-NEXT: Address:  2103280
CHECK-NEXT:  [Probe]: FUNC: main Index: 1  Type: Block
CHECK-NEXT:  [Probe]: FUNC: foo Index: 1  Type: Block  Inlined: @ main:2
CHECK-NEXT:  [Probe]: FUNC: foo Index: 2  Type: Block  Inlined: @ main:2
CHECK-NEXT: Address:  2103293
CHECK-NEXT:  [Probe]: FUNC: foo Index: 5  Type: Block  Inlined: @ main:2
CHECK-NEXT:  [Probe]: FUNC: foo Index: 6  Type: Block  Inlined: @ main:2
CHECK-NEXT:  [Probe]: FUNC: foo Index: 2  Type: Block  Inlined: @ main:2
CHECK-NEXT: Address:  2103307
CHECK-NEXT:  [Probe]: FUNC: foo Index: 3  Type: Block  Inlined: @ main:2
CHECK-NEXT: Address:  2103338
CHECK-NEXT:  [Probe]: FUNC: foo Index: 4  Type: Block  Inlined: @ main:2
CHECK-NEXT:  [Probe]: FUNC: foo Index: 6  Type: Block  Inlined: @ main:2
CHECK-NEXT:  [Probe]: FUNC: foo Index: 2  Type: Block  Inlined: @ main:2
CHECK-NEXT:  [Probe]: FUNC: bar Index: 1  Type: Block  Inlined: @ main:2 @ foo:8
CHECK-NEXT:  [Probe]: FUNC: bar Index: 4  Type: Block  Inlined: @ main:2 @ foo:8
CHECK-NEXT: Address:  2103383
CHECK-NEXT:  [Probe]: FUNC: foo Index: 7  Type: Block  Inlined: @ main:2
CHECK-NEXT: Address:  2103394
CHECK-NEXT:  [Probe]: FUNC: foo Index: 9  Type: DirectCall  Inlined: @ main:2
